package _0util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.joda.time.DateTime;

import java.util.Date;
import java.util.Map;

/**
 * @ClassName JwtUtil
 * @Description: jwt工具类
 * @Author wangzhen
 * @Date 2020/3/13
 **/
public class JwtUtil {

    private static final String TOKEN_SALT="haha";

    /**
     * 生成jwt签名
     * @param body
     * @return
     */
    public static String createToken(Map<String,Object> body){
        JwtBuilder builder= Jwts.builder();
        Date date=new Date();

        builder.setIssuedAt(date);//签发时间

        builder.setClaims(body);//载荷
        builder.setExpiration(new DateTime(date).plusMinutes(30).toDate())//过期时间，30分钟后
                .signWith(SignatureAlgorithm.HS256,TOKEN_SALT);//签名，使用HS256算法+盐值来加密

        return builder.compact();
    }

    /**
     * 验证jwt密文
     * @param token
     * @return
     */
    public static Claims validationToken(String token){
        Claims body=null;
        try {
            body = Jwts.parser().setSigningKey(TOKEN_SALT).parseClaimsJws(token).getBody();

        }catch (Exception e){

        }finally {
            return body;
        }

    }
}
